package com.example.springbootdemo.controller;

import com.example.springbootdemo.entity.User;
import com.example.springbootdemo.pojo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;

/**
 * 非Restful风格的接口案例
 */
@RestController
@Api(tags = "非Restful风格的接口")
@RequestMapping("/my-controller")
public class MyController {

    private static final Logger logger = LoggerFactory.getLogger(MyController.class);

    /**
     * 传递参数
     * @param username  用户名
     * @param password  密码
     * @return
     */
    @GetMapping("/login")
    @ApiOperation("登录接口")
    public Result sysLogin(@ApiParam(value = "用户名") @RequestParam(required = true) String username,
                           @ApiParam(value = "密码") @RequestParam(required = true) String password){
        logger.info("接收到请求!");
        logger.info("接收到的请求参数是--：");
        logger.info("username --: "+ username);
        logger.info("password --: "+ password);
        //通过去数据库查询该条数据，比对密码是否匹配，匹配则跳转首页
        return Result.ok();
    }


    /**
     * 接收请求地址是 http:localhost:8080/login2 的请求，并且请求方法是get
     * 不需要传递参数
     */
    @GetMapping("/login2")
    @ApiOperation("登录接口2")
    public Result login2(){
        logger.info("收到登录请求" );
        return Result.ok();
    }

    /**
     *
     *  接收请求地址是 http:localhost:8080/login3 的请求，并且请求方法是get
     *  传递参数是 username 和 password
     * @param user
     * @return
     */
    @GetMapping("/login3")
    @ApiOperation("登录接口3")
    public Result login3(User user){
        logger.info("接收到的参数为--："+ user.toString());
        return Result.ok();
    }


    /**
     * 接收请求地址是 http:localhost:8080/login4 的请求，并且请求方法是get
     * 需要传递参数 username 和 password
     * 没有显式的写出要传递哪些参数，不支持swagger测试
     * @param req
     * @return
     */
    @GetMapping("/login4")
    @ApiOperation("登录接口4")
    public Result login4(HttpServletRequest req){
        logger.info("接收到请求参数如下--：");
        logger.info("username--: " + req.getParameter("username"));
        logger.info("password--: " + req.getParameter("password"));
        return Result.ok();
    }

    /**
     * 接收请求地址是 http:localhost:8080/login4 的请求，并且请求方法是post
     * 请求参数是 user对象
     * @param user
     * @return
     */
    @PostMapping("/login5")
    @ApiOperation("登录接口5")
    public Result login5(@RequestBody @ApiParam(name = "用户对象",value = "传入json格式") User user ){
        logger.info("接收到的请求参数是--： " + user.toString());
        return Result.ok();
    }


}
